///*******************************************************************************
// * Copyright (c) 2007, 2008 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// * Michael Krkoska - initial API and implementation (bug 188333)
// *******************************************************************************/
//package org.eclipse.jface.tests.viewers.interactive;
//
//import java.text.DecimalFormat;
//import java.text.MessageFormat;
//
//import org.eclipse.jface.preference.JFacePreferences;
//import org.eclipse.jface.resource.JFaceResources;
//import org.eclipse.jface.viewers.IStructuredContentProvider;
//import org.eclipse.jface.viewers.StyledCellLabelProvider;
//import org.eclipse.jface.viewers.StyledString;
//import org.eclipse.jface.viewers.TableViewer;
//import org.eclipse.jface.viewers.Viewer;
//import org.eclipse.jface.viewers.ViewerCell;
//import org.eclipse.jface.viewers.StyledString.Styler;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.events.SelectionAdapter;
//import org.eclipse.swt.events.SelectionEvent;
//import org.eclipse.swt.graphics.Font;
//import org.eclipse.swt.graphics.FontData;
//import org.eclipse.swt.graphics.Image;
//import org.eclipse.swt.graphics.RGB;
//import org.eclipse.swt.graphics.TextStyle;
//import org.eclipse.swt.layout.GridData;
//import org.eclipse.swt.layout.GridLayout;
//import org.eclipse.swt.widgets.Button;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.swt.widgets.Control;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Event;
//import org.eclipse.swt.widgets.Label;
//import org.eclipse.swt.widgets.Shell;
//
///**
// * Using a {@link StyledCellLabelProvider} on table viewer.
// */
//
//public class StyledCellLabelProviderTests {
//
// private static int IMAGE_SIZE= 16;
//
// private static Image IMAGE1;
// private static Image IMAGE2;
//
// public static void main(String[] args) {
//
// Display display = new Display();
//
// JFaceResources.getColorRegistry().put(JFacePreferences.COUNTER_COLOR, new RGB(0,127,174));
//
// IMAGE1= new Image(display, display.getSystemImage(SWT.ICON_WARNING).getImageData().scaledTo(IMAGE_SIZE, IMAGE_SIZE));
// IMAGE2= new Image(display, display.getSystemImage(SWT.ICON_ERROR).getImageData().scaledTo(IMAGE_SIZE, IMAGE_SIZE));
//
// Shell shell= new Shell(display , SWT.CLOSE | SWT.RESIZE);
// shell.setSize(400, 600);
// shell.setLayout(new GridLayout(1, false));
//
// StyledCellLabelProviderTests example= new StyledCellLabelProviderTests();
// Control composite= example.createPartControl(shell);
// composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
//
// shell.open();
//
// while (!shell.isDisposed()) {
// if (!display.readAndDispatch()) {
// display.sleep();
// }
// }
// display.dispose();
// }
//
// protected boolean useBold;
//
// public StyledCellLabelProviderTests() {
// }
//
// public Composite createPartControl(Composite parent) {
// Composite composite= new Composite(parent, SWT.NONE);
//
// composite.setLayout(new GridLayout(1, true));
//
// final Label label= new Label(composite, SWT.NONE);
// label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
// label.setText("Operations per second: xxxxx"); //$NON-NLS-1$
//
// final Runnable[] operation = new Runnable[1];
//
// final Button timeButton = new Button(composite, SWT.CHECK);
// timeButton.setText("Time");
// timeButton.addSelectionListener(new SelectionAdapter(){
// public void widgetSelected(SelectionEvent e) {
// setTimer(timeButton.getDisplay(), timeButton.getSelection(), operation, label);
// }
// });
//
// final Button stylingButton = new Button(composite, SWT.CHECK);
// stylingButton.setText("enable styling");
// stylingButton.setSelection(true);
//
// final Button boldButton = new Button(composite, SWT.CHECK);
// boldButton.setText("use bold");
//
// final TableViewer tableViewer= new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
//
// boldButton.addSelectionListener(new SelectionAdapter(){
// public void widgetSelected(SelectionEvent e) {
// useBold = boldButton.getSelection();
// tableViewer.refresh();
// }
// });
//
// operation[0] = new Runnable(){
// public void run() {
// tableViewer.refresh();
// }
// };
//
// FontData[] boldFontData= getModifiedFontData(tableViewer.getTable().getFont().getFontData(), SWT.BOLD);
//
// Font boldFont = new Font(Display.getCurrent(), boldFontData);
// final ExampleLabelProvider labelProvider= new ExampleLabelProvider(boldFont);
// TestContentProvider contentProvider= new TestContentProvider();
//
// tableViewer.setContentProvider(contentProvider);
// tableViewer.setLabelProvider(labelProvider);
//
// stylingButton.addSelectionListener(new SelectionAdapter(){
// public void widgetSelected(SelectionEvent e) {
// labelProvider.setOwnerDrawEnabled(stylingButton.getSelection());
// tableViewer.refresh();
// }
// });
//
//
// GridData data= new GridData(GridData.FILL, GridData.FILL, true, true);
// tableViewer.getControl().setLayoutData(data);
// tableViewer.setInput(new Object());
//
// return composite;
// }
//
// boolean timerOn = false;
// long startTime;
// int numOperations;
// DecimalFormat decimalFormat = new DecimalFormat("##.#");
//
// protected void setTimer(final Display display, boolean selection, final Runnable[] operation, final Label resultLabel) {
// timerOn = selection;
// if (timerOn) {
// startTime = System.currentTimeMillis();
// numOperations = 0;
// display.asyncExec(new Runnable() {
// public void run() {
// if (display.isDisposed() || resultLabel.isDisposed()) {
// return;
// }
// if (operation[0] != null) {
// operation[0].run();
// }
// numOperations++;
// long currentTime = System.currentTimeMillis();
// long elapsedTime = currentTime - startTime;
// if (elapsedTime >= 1000) {
// double timePerOperation = elapsedTime / 1000.0 / numOperations;
// double operationsPerSecond = 1.0/timePerOperation;
// resultLabel.setText("Operations per second: " + decimalFormat.format(operationsPerSecond));
// numOperations = 0;
// startTime = System.currentTimeMillis();
// }
// if (timerOn) {
// display.asyncExec(this);
// }
// }
// });
// } else {
// resultLabel.setText("Operations per second: xxxx");
// }
// }
//
// private static FontData[] getModifiedFontData(FontData[] originalData, int additionalStyle) {
// FontData[] styleData = new FontData[originalData.length];
// for (int i = 0; i < styleData.length; i++) {
// FontData base = originalData[i];
// styleData[i] = new FontData(base.getName(), base.getHeight(), base.getStyle() | additionalStyle);
// }
// return styleData;
// }
//
// private class ExampleLabelProvider extends StyledCellLabelProvider {
//
// private final Styler fBoldStyler;
//
// public ExampleLabelProvider(final Font boldFont) {
// fBoldStyler= new Styler() {
// public void applyStyles(TextStyle textStyle) {
// textStyle.font= boldFont;
// }
// };
// }
//
// public void update(ViewerCell cell) {
// Object element= cell.getElement();
//
// if (element instanceof File) {
// File file= (File) element;
//
// Styler style= file.isDirectory() && useBold ? fBoldStyler: null;
// StyledString styledString= new StyledString(file.getName(), style);
// String decoration = MessageFormat.format(" ({0} bytes)", new Object[] { new Long(file.length()) }); //$NON-NLS-1$
// styledString.append(decoration, StyledString.COUNTER_STYLER);
//
// cell.setText(styledString.toString());
// cell.setStyleRanges(styledString.getStyleRanges());
//
// if (file.isDirectory()) {
// cell.setImage(IMAGE1);
// } else {
// cell.setImage(IMAGE2);
// }
// } else {
// cell.setText("Unknown element"); //$NON-NLS-1$
// }
//
// super.update(cell);
// }
//
// protected void measure(Event event, Object element) {
// super.measure(event, element);
// }
// }
//
// static class File {
//
// private final String name;
// private final int length;
// private final boolean dir;
//
// File(String name, int length, boolean dir) {
// this.name = name;
// this.length = length;
// this.dir = dir;
// }
//
// public int length() {
// return length;
// }
//
// public String getName() {
// return name;
// }
//
// boolean isDirectory() {
// return dir;
// }
//
// }
//
// private static class TestContentProvider implements IStructuredContentProvider {
//
// public Object[] getElements(Object element) {
// return new File[]{
// new File("asdfkjghfasdkjasdfhjgasdfkjhg", 2348, false),
// new File("sdafkuyasdfkljh", 2348, false),
// new File("asdklufhalsdkhlkjhnklj hlh", 2348, true),
// new File("asdfasdf asdf ", 2348, false),
// new File("fds sdf", 2348, true),
// new File(" sdafuh lsdfahj alsdfk hl", 2348, false),
// new File("sdfahj sdfajk hsdfjkh", 2348, false),
// new File("sdafkja sdfjkh asdfkhj", 2348, false),
// new File("sdfakj hasdfljkha sdfljkh sdfa", 348, true),
// new File("hj ka g", 1334, true),
// new File("asdfjk hsdfaljkh", 2348, false),
// new File("asdh gasdflhg ", 3348, true),
// new File("asd ghasdfkjg sdfkyug ", 4345, false),
// new File("asdf hjasdflkjh sdfal", 5345, false),
// new File("asdlfuh afsdhjg fdsalhj", 6648, false),
// new File("uiy viuh vhj v", 7448, true),
// new File("sdfauighsdvpyu ghasjkn", 8848, true),
// new File("asduih cuia ;nac", 9548, false),
// new File("chju kljhuuklh jk;", 348, false),
// new File("cdailukhu l;hj .n", 448, false),
// new File("auihy akl;h l;j", 2348, false),
// new File("caiugh j l;kjlh jcd", 2328, true),
// new File("auio;h jkh lhjl h ljjhbvj", 2348, true),
// new File("ajklkja kj lkjh jklh ", 2248, false),
// new File("asdfkjghfasdkjasdfhjgasdfkjhg", 2348, true),
// new File("sdafkuyasdfkljh", 2348, false),
// new File("asdklufhalsdkhlkjhnklj hlh", 2348, true),
// new File("asdfasdf asdf ", 2348, false),
// new File("fds sdf", 2348, true),
// new File(" sdafuh lsdfahj alsdfk hl", 2348, true),
// new File("sdfahj sdfajk hsdfjkh", 2348, false),
// new File("sdafkja sdfjkh asdfkhj", 2348, true),
// new File("sdfakj hasdfljkha sdfljkh sdfa", 348, true),
// new File("hj ka g", 1334, false),
// new File("asdfjk hsdfaljkh", 2348, false),
// new File("asdh gasdflhg ", 3348, true),
// new File("asd ghasdfkjg sdfkyug ", 4345, true),
// new File("asdf hjasdflkjh sdfal", 5345, true),
// new File("asdlfuh afsdhjg fdsalhj", 6648, false),
// new File("uiy viuh vhj v", 7448, false),
// new File("sdfauighsdvpyu ghasjkn", 8848, true),
// new File("asduih cuia ;nac", 9548, false),
// new File("chju kljhuuklh jk;", 348, true),
// new File("cdailukhu l;hj .n", 448, true),
// new File("auihy akl;h l;j", 2348, false),
// new File("caiugh j l;kjlh jcd", 2328, true),
// new File("auio;h jkh lhjl h ljjhbvj", 2348, false),
// new File("ajklkja kj lkjh jklh ", 2248, true),
// };
// }
//
// public void dispose() {
// }
//
// public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// }
// }
//}